package vip.xiaonuo.sys.modular.courseselection.service;

import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.extension.service.IService;
import org.apache.ibatis.annotations.Param;
import vip.xiaonuo.sys.modular.courseselection.dto.CourseSelectionQryDto;
import vip.xiaonuo.sys.modular.courseselection.entity.CourseSelection;
import vip.xiaonuo.sys.modular.courseselection.vo.CourseSelectionBaesVo;
import vip.xiaonuo.sys.modular.courseselection.vo.CourseSelectionDetailVo;
import vip.xiaonuo.sys.modular.courseselection.vo.CourseSelectionStuVo;

import java.util.List;

/**
 * @author 墨塵
 * @since 2022/7/20
 */
public interface CourseSelectionService extends IService<CourseSelection> {

    /**
     * 选课基础信息
     *
     * @param dto
     * @return
     */
    CourseSelectionBaesVo getBaseInfo(CourseSelectionQryDto dto);

    /**
     * 选课内容信息(CourseSelectionInfoVo)
     *
     * @param dto
     * @return
     */
    JSONObject getCryInfo(CourseSelectionQryDto dto);

    /**
     * 选课
     *
     * @param entity
     * @return
     */
    int toSelection(CourseSelection entity);

    /**
     * 取消选课
     *
     * @param entity
     * @return
     */
    int cancelSelection(CourseSelection entity);

    /**
     * 清空选课
     *
     * @param dto
     * @return
     */
    int emptySelection(CourseSelectionQryDto dto);

    /**
     * 选课明细
     * @param dto
     * @return
     */
    List<CourseSelectionDetailVo> getCsDetailList(CourseSelectionQryDto dto);

    /**
     * 导出选课明细
     * @param dto
     */
    void exportCsDetailList(CourseSelectionQryDto dto);

    /**
     * 导出选课
     * @param dto
     */
    void exportSelection(CourseSelectionQryDto dto);

    /**
     * 选课学生列表
     * @param dto
     * @return
     */
    List<CourseSelectionStuVo> getStuList(CourseSelectionQryDto dto);

    /**
     * 开课学生列表
     * @param dto
     * @return
     */
    List<CourseSelectionStuVo> getStuAllList(CourseSelectionQryDto dto);
}
